package com.trgis.geotools;

import java.lang.annotation.*;

/**
 * ShapeTools工具类的toGeoJSON方法对空间对象进行GeoJSON格式字符化时使用</br>
 * 用来生成org.geotools.feature.simple.SimpleFeatureTypeBuilder
 * 2018年10月29日
 * @author  王风雨
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
@Documented
@Inherited
public @interface GeoJSON {
    /**
     * 对应的SimpleFeatureTypeBuilder的setName方法参数，一般用在类上
     *
     * @return
     */
    String name() default "feature";

    /**
     * 用在空间对象的属性上，对应GeoJSON的属性名称</br>
     * 因为生成shp文件时，定义的shp字段名不能超过10个字符，shp不支持中文字段</br>
     * 所以当对象数据名长度超过10个字符时，必须指定field</br>
     * 当生成geojson格式的文件时，可以使用中文字段，仅限由对象生成geojson
     * @return
     */
    String field() default "";

    /**
     * 在空间属性上使用应设置为true，且field需要设置为the_geom
     * @return
     */
    boolean isGeometry() default false;

    /**
     * ID属性上使用应设置为true
     * @return
     */
    boolean isID() default false;

    /**
     * 对象的Class类型，当int, double等时，需要声明为Integer，Double等</br>
     * <code>@GeoJSON(type=Integer.class)</code>
     * <code>int count</code>
     * @return
     */
    Class type() default  Object.class;
}
